\section*{3.1 Levenberg–Marquardt(LM)优化算法}
\subsection*{1、问题简介}
Levenberg-Marquardt算法\cite{lm3,lm4,lm2,lm1}是目前使用最为广泛的数值优化算法。在很多问题上它都优于简单梯度下降法和其他的共轭梯度方法。LM算法用于求解非线性最小二乘问题，即
$$f(x)=\frac{1}{2}\sum_{j=1}^{m}r_{j}^{2}(x)\eqno(3.1.1)$$
其中，$x=(x_{1},x_{2},...,x_{n}), r(x)=(r_{1}(x),r_{2}(x),...,r_{m}(x))$
\par 
Levenberg-Marquardt算法已经被广泛的作为各种商业和非商业数值优化软件的内核算法，这些软件包括Mathematica，Matlab，Origin，Qtiplot和gnuplot。此外，还有一些科学计算函数库也实现了Levenberg-Marquardt 算法，levmar是LM 算法的C/C++实现，levmar是开源库，遵循GPL开源协议， Javanumerics是LM算法的java实现，WESC所应用的 LM 算法就是基于Javanumerics的，在此基础上稍作改动。最初版本由jplewis编写，后由dscherba和Jonathan Jackson分别作了改进。算法程序的测试结果已经和gnuplot和Origin的内置拟合算法比较无误。
\subsection*{2、Levenberg-Marquardt法}
